Other than Exit Select
, using an Exit
statement is never a good idea.
Exit Do
, Exit For
, Exit Try
, and Exit While
will all result in unstructured control flow, i.e.
spaghetti code.
Exit Function
, Exit Property
, and Exit Sub
are all poor, less-readable substitutes for a simple
return
, and if used with code that should return a value (Exit Function
and in some cases Exit Property
) they
could result in a NullReferenceException
.
This rule raises an issue for all uses of Exit
except Exit Select
and Exit Do
statements in loops without
condition.
Noncompliant code example
Public Class Sample
Dim condition As Boolean
Public Sub MySub()
If condition Then
Exit Sub ' Noncompliant
End If
For index = 1 To 10
If index = 5 Then
Exit For ' Noncompliant
End If
' ...
Next
End Sub
Function MyFunction() As Object
' ...
MyFunction = 42
Exit Function ' Noncompliant
End Function
End Class
Compliant solution
Public Class Sample
Dim condition As Boolean
Public Sub MySub()
If condition Then
Return
End If
For index = 1 To 4
' ...
Next
End Sub
Function MyFunction() As Object
' ...
Return 42
End Function
End Class